
### 项目一 LED灯闪烁

**项目介绍：**

![image24](../media/ae80c4ac2d601bf0e96ccb25ed872dcb.jpg)

前面我们安装了keyes PLUS开发板的驱动。接下来的项目我们就要由简单到复杂，一步一步探索Arduino的世界了。首先我们要来完成经典的“Arduino点亮LED”，也就是Blink项目。Blink对于学习Arduino的爱好者而言，是最基础的项目是新手必须经历的一个练习。

LED，发光二极管的简称。由含镓（Ga）、砷（As）、磷（P）、氮（N）等的化合物制成。当电子与空穴复合时能辐射出可见光，因而可以用来制成发光二极管。在电路及仪器中作为指示灯，或者组成文字或数字显示。

为了实验的方便，我们将LED发光二极管做成了一个模块，在第一个项目中，我们用一个最基本的测试代码来控制LED，亮一秒钟，灭一秒钟，来实现闪烁的效果。你可以改变代码中LED灯亮灭的时间，实现不同的闪烁效果。LED模块信号端S为高电平时LED亮起，S为低电平时LED熄灭。

![image25](../media/85b2076096371fd9ca03671602b1e5ce.png)

![image26](../media/31734302247e9a18efc688056a9c1019.png)

**LED模块参数：**

控制接口: 数字口

工作电压: DC 3.3-5V

排针间距: 2.54mm

LED显示颜色：红色

**项目组件：**

| UNO R3 开发板\*1                                          | L298P 电机驱动扩展板 V1\*1                                | LED白发红模块\*1                                          |
| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- |
| ![image27](../media/67417bd98f12bffd0352f76063e5abbd.png) | ![image28](../media/3dca1bdd1d1420c1d12b16cbf52fee00.png) | ![image29](../media/31fb938502d3d519813c391569d6a3f3.png) |
| USB线\*1                                                  | 3Pin 双母头杜邦线\*1                                      | 18650双节电池盒 (18650电池*2(电池自配))*1                 |
| ![image30](../media/mage47.png)                           | ![image31](../media/07752ebfc8e8af62f1b86c4a725ea284.jpg) | ![image32](../media/c5bf59a8e5cdded95c02334369ab6fdd.png) |

**接线图：**

**⚠️特别注意：坦克智能车已经组装好了，这里不需要把传感器模块和其他的都拆下来又重新组装和接线，这里再次提供接线图，是为了方便您编写代码。但是，LED灯是需要另外连接上去的！**

![image33](../media/eb4e6d393edafbda78ae4cb3b58a961e.png)

由上图我们可以看到，扩展板是堆叠在开发板上的，LED模块的-接到了扩展板的G,LED模块的+接到了扩展板的5V，LED模块的S已经接到了扩展板上的D9接口，接好线之后我们开始编写代码：

**项目代码：**

（**特别提醒：在上传程序代码前，需要把蓝牙模块取下，否则代码会上传失败。需要上传代码成功后，再连接蓝牙模块。**）

``` c
/*
  迷你履带坦克机器人
  课程 1.1
  LED闪烁
  http://www.keyes-robot.com
*/
void setup()
{
  pinMode(9, OUTPUT);// 初始化数字口9为输出模式
}
void loop() // 无限循环
{
  digitalWrite(9, HIGH); // 设置数字口输出高电平，打开LED
  delay(1000); // 等待1秒
  digitalWrite(9, LOW); // 设置数字口输出低电平，关闭LED
  delay(1000); // 等待1秒
}
```

**项目结果：**

点击上传程序，你应该看到D9脚接着的LED打开和关闭，而且间隔的时间是一秒钟。

**代码说明:**

pinMode(9，OUTPUT) -在使用Arduino的引脚之前，你需要告诉开发板它是INPUT还是OUTPUT。我们使用一个内置的“函数”pinMode()来做到这一点。

digitalWrite(9，HIGH) -当使用引脚作为OUTPUT时，可以将其命令为HIGH（输出5伏）或LOW（输出0伏）。

**项目拓展：**

前面我们控制了LED模块亮1秒钟,灭一秒钟，现在我们来拓展一下思路，通过改变delay的时间来改变LED
灯闪烁的频率。

代码如下:

（**特别提醒：在上传程序代码前，需要把蓝牙模块取下，否则代码会上传失败。需要上传代码成功后，再连接蓝牙模块。**）

``` c
/*
  迷你履带坦克机器人
  课程 1.2
  LED闪烁
  http://www.keyes-robot.com
*/
void setup()
{
  pinMode(9, OUTPUT);// 初始化数字口9为输出模式
}
void loop() // 无限循环
{
  digitalWrite(9, HIGH); // 设置数字口输出高电平，打开LED
  delay(100); // 等待0.1秒
  digitalWrite(9, LOW); // 设置数字口输出低电平，关闭LED
  delay(100); // 等待0.1秒
}
```

怎么样是不是很好理解，就是通过改变delay这个代码的时间，来改变LED亮和灭的频率，不多说，我们上传代码。看看这个LED灯闪烁的频率是不是比之前快了？